setfacl(1)

名称

setfacl —— 设置ACL信息

语法

setfacl [-R [-H | -L | -P]] [-bdhkn] [-a position entries] [-m entries] [-M file] [-x entries | position] [-X file] [file ...]

描述

setfacl 实用程序设置指定文件的自主访问控制信息。如果没有指定文件,或者列表只包含“-”,则文件名取自标准输入。

以下选项可用:

以上选项按照命令行上指定的顺序进行评估。

POSIX.1e ACL条目

POSIX.1E ACL条目包含三个冒号分隔的字段:ACL标签、ACL限定符和自主访问权限:

对于包含默认“user”、“group”和“other”ACL条目以外的任何ACL条目的文件,都需要一个“mask”ACL条目。如果未指定 -n 选项且未指定“mask”ACL条目,则setfacl实用程序将应用一个“mask”ACLs条目,该条目由与结果ACL中所有“group”ACL条目关联的权限的联合组成。

在POSIX.1e扩展ACL存在的情况下,作用于文件系统对象模式的传统POSIX接口修改了语义。当对象的访问ACL上存在掩码条目时,掩码条目将替换组位;这发生在 stat(1)ls(1) 等程序中。当对具有掩码的对象修改模式时,应用于组位的更改实际上将应用于掩码条目。这些语义提供了更大的应用程序兼容性:修改模式而不是ACL的应用程序将看到保守的行为,限制了所有其他用户和组条目授予的有效权限;这发生在 aschmod(1) 等程序中。

使用 -M 或 -X 选项从文件应用的ACL条目应采用以下形式:

当评估POSIX.1e ACL条目时,访问检查算法按以下顺序检查ACL条目:文件所有者、“user”ACL条目、文件所有者组、“group”ACL条目和“other”ACL条目。

命令行上指定的多个ACL条目用逗号分隔。

文件和目录可以从其父目录继承ACL条目。这是通过使用默认ACL来实现的。应该注意的是,在指定默认ACL之前,必须设置用户、组、其他和掩码的强制ACL条目。有关更多详细信息,请参阅下面的示例。可以使用 -d 创建默认ACL。

NFSv4 ACL条目

NFSv4 ACL条目包含四个或五个冒号分隔的字段:ACL标签、ACL限定符(仅适用于“user”和“group”标签)、自主访问权限、ACL继承标志和ACL类型:

使用 -M 或 -X 选项从文件应用的ACL条目应采用以下形式:如前所述,每行一个ACL条目;空白被忽略;忽略“#”后的任何文本(注释)。

NFSv4 ACL条目按其可见顺序进行评估。

命令行上指定的多个ACL条目用逗号分隔。

请注意,文件所有者始终被授予 read_aclwrite_aclread_attributeswrite_attributes 权限,即使ACL会拒绝它。

退出状态

setfacl 实用程序在成功时退出0,如果发生错误,则退出>0。

示例

第一个命令设置POSIX.1e默认ACL的强制元素。第二个命令指定 admin 组中的用户可以对名为 dir 的目录拥有读取、写入和执行权限。应该注意的是,在 dir 下创建的任何文件或目录在创建时都将继承这些默认ACL。

file 所有者的POSIX.1e ACL条目设置读取、写入和执行权限,并为 file 上的 mail 组设置读取和写入权限。

语义上与上述示例相同,但适用于NFSv4 ACL。

file2 上设置/更新 file1 中包含的ACL条目。

file 中删除包含读/写权限的组邮件POSIX.1e ACL条目。

file 中删除NFSv4 ACL中的第一个条目。

file 中删除所有“access”ACL条目,但所需的三个条目除外。

将ACL条目从 file1 复制到 file2

getfacl(1)

语法

getfacl [-dhinqv] [file ...]

描述

getfacl 实用程序将与指定文件关联的自主访问控制信息写入标准输出。如果 getconf(1) 实用程序指示{_POSIX_ACL_EXTENDED}对 file 无效,则标准自主访问权限被解释为仅包含所需ACL条目的ACL。

以下选项可用:

以下操作数可用:

有关ACL语法的说明,请参阅 setfacl(1) 手册页。

示例

检索目录/的ACL。

检索目录/的默认ACL(如果有)。